//给定一个非负整数，你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 
//
// 示例 1 : 
//
// 
//输入: 2736
//输出: 7236
//解释: 交换数字2和数字7。
// 
//
// 示例 2 : 
//
// 
//输入: 9973
//输出: 9973
//解释: 不需要交换。
// 
//
// 注意: 
//
// 
// 给定数字的范围是 [0, 10⁸] 
// 
//
// Related Topics 贪心 数学 👍 326 👎 0

package leetcode.editor.cn;

public class _670_MaximumSwap {
    public static void main(String[] args) {
        Solution solution = new _670_MaximumSwap().new Solution();
        int num = 2736;
        System.out.println(solution.maximumSwap(num));
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int maximumSwap(int num) {
            int res = num;
            int n = ("" + num).length();
            for (int i = 0; i < n; i++) {
                for (int j = i + 1; j < n; j++) {
                    res = Math.max(res, changed(num, i, j));
                }
            }
            return res;
        }

        private int changed(int num, int indexI, int indexJ) {
            String s = "" + num;
            char[] chars = s.toCharArray();
            char i = chars[indexI];
            char j = chars[indexJ];
            chars[indexI] = j;
            chars[indexJ] = i;
            return Integer.parseInt(String.valueOf(chars));
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}